﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using APILocawebGateway.HTMLHelper;
using APILocawebGateway;
namespace APILocawebGateway.VISA
{
    public class HTMLHelperVISA
    {
        #region Funções para renderizar o form

        /// <summary>
        /// Este método Monta o form básico para ser renderizado
        /// </summary>
        /// <param name="numeroOrdem"></param>
        /// <param name="preco"></param>
        /// <returns></returns>
        private static Form MontarFormBasico(ConfiguracaoVISA configuracaoVisaVBV, Int32 quantidadeParcelas, String numeroOrdem, Decimal preco, string imagePath)
        {
            Form form = new Form(Configuracao.URLCOMPONENTELOCAWEB, "POST", "frmVisa");
            form.AddControl(new InputHidden("identificacao", configuracaoVisaVBV.Identificacao));
            form.AddControl(new InputHidden("ambiente", configuracaoVisaVBV.Ambiente.ToString()));
            form.AddControl(new InputHidden("modulo", Modulos.VISAVBV));
            form.AddControl(new InputHidden("operacao", "Pagamento"));
            form.AddControl(new InputHidden("tid", TID.GerarTid(configuracaoVisaVBV, quantidadeParcelas)));
            form.AddControl(new InputHidden("orderid", numeroOrdem));
            form.AddControl(new InputHidden("order", "InfoAdicional"));
            form.AddControl(new InputHidden("price", Utilidades.FormatarPreco(preco)));
            form.AddControl(new InputHidden("damount", Utilidades.FormatarDamount(preco)));
            return form;
        }

        /// <summary>
        /// Este método retorna o form como string pronto para ser renderizado
        /// </summary>
        /// <param name="configuracaoVisaVBV"> Objeto do tipo Configuração VISA</param>
        /// <param name="quantidadeParcelas">valor numérico que representa á quantidade de parcelas</param>
        /// <param name="numeroOrdem">Número de controle interno, pode ser qualquer campo texto</param>
        /// <param name="preco">O preço em decimal</param>
        /// <returns></returns>
        public static string RenderizarForm(ConfiguracaoVISA configuracaoVisaVBV, Int32 quantidadeParcelas, String numeroOrdem, Decimal preco)
        {
            return MontarFormBasico(configuracaoVisaVBV, quantidadeParcelas, numeroOrdem, preco, String.Empty).Render();
        }

        /// <summary>
        /// Este método retorna o form como string. esta versão renderiza um
        /// campo livre e uma imagem
        /// </summary>
        /// <param name="numeroOrdem"></param>
        /// <param name="preco"></param>
        /// <param name="campoLivre"></param>
        /// <returns></returns>
        public static string RenderizarForm(ConfiguracaoVISA configuracaoVisaVBV, Int32 quantidadeParcelas, String numeroOrdem, Decimal preco, string campoLivre, String imagePath)
        {
            Form form = MontarFormBasico(configuracaoVisaVBV, quantidadeParcelas, numeroOrdem, preco, imagePath);
            form.AddControl(new InputHidden("free", campoLivre));
            form.AddControl(new PaymentMethodImage("imgVisa", imagePath, 100, 50));
            form.AddControl(new LineSeparator());
            form.AddControl(new LinkLabel("lnkVisaSabibaMais", "Saiba mais", "http://www.visa.com.br/vbv/vbv_saibamais.asp"));
            return form.Render();

        }

        #endregion
    }
}
